package com.rd.teacher.jichao.day08;


public class HashSetTest {

    public static void main(String[] args) {
//        HashSet set = new HashSet();
//        set.add("1");
//        set.add("2");
//        System.out.println(set.add("1"));
//        System.out.println(set.size());
//
//        for (Object obj : set) {
//            System.out.println(obj);
//        }

        // HashMap -> HashSet
        // <"1",null>
        // <"2",null>

//        set.add(new A());
//        set.add(new A());
//        set.add(new B());
//        set.add(new B());
//        set.add(new C());
//        set.add(new C());
//        for (Object obj : set) {
////            System.out.println(obj);
//        }
//
//        B b1 = new B();
//        B b2 = new B();
//        System.out.println(b1.equals(b2));
        // set中有几个A 几个B 几个C
        // 2 2 2
        // 1 1 1
        // 2 1 1
        // 2 1 2
        // 1 2 1
        // 1 1 2
        // 2 2 1
        // 1 2 2


//        LinkedHashSet linkedHashSet = new LinkedHashSet();
//        linkedHashSet.add("1");
//        linkedHashSet.add("2");
//        linkedHashSet.add("3");
//        linkedHashSet.add("2");
//
//        for (Object o : linkedHashSet) {
//            System.out.println(o);
//        }

//        System.out.println(Integer.compare(20, 10));
//        System.out.println(Integer.compare(20, 20));
//        System.out.println(Integer.compare(10, 20));

//        ArrayList arrayList = new ArrayList();
//        arrayList.add(new D(17));
//        arrayList.add(new D(20));
//        arrayList.add(new D(22));
//        arrayList.add(new D(11));
//        arrayList.add(new D(15));
//        arrayList.add(new D(18));
//
//        Collections.sort(arrayList);
//        System.out.println(arrayList);
        // 20 18 17 15

        // 翻转
//        Collections.reverse(arrayList);
//        System.out.println(arrayList);

        //
//        Collections.sort(arrayList, new Comparator<Object>() {
//            @Override
//            public int compare(Object o1, Object o2) {
//                D d1 = (D)o1;
//                D d2 = (D)o2;
//                if(d1.age < d2.age) return -1;
//                if(d1.age > d2.age) return 1;
//                return 0;
//            }
//        });
//        System.out.println(arrayList);

        // 洗牌操作  打乱顺序
//        Collections.shuffle(arrayList);
//        System.out.println(arrayList);

        // 调换顺序
//        Collections.swap(arrayList,0,2);
//        System.out.println(arrayList);

        // 移动前2个元素到后面  或移动后两个元素到前面
//        Collections.rotate(arrayList,2);
//        System.out.println(arrayList);
//        Collections.shuffle(arrayList);
//        System.out.println(arrayList);
//        Collections.rotate(arrayList,-2);
//        System.out.println(arrayList);



//        ArrayList list = new ArrayList();
//        list.add(1);
//        list.add(2);
//        list.add(1);
//        list.add(2);
//        list.add(3);

//        int result = Collections.frequency(list,1);
//        System.out.println(result);
//
//        System.out.println(Collections.frequency(list,2));
//        System.out.println(Collections.frequency(list,3));

//        ArrayList subList = new ArrayList();
////        subList.add(1);
//        subList.add(2);
//
//        ArrayList subList1 = new ArrayList();
//        subList1.add(4);
//
//        int r1 = Collections.indexOfSubList(list,subList);
//        System.out.println(r1);
//
//        int r2 = Collections.lastIndexOfSubList(list,subList);
//        System.out.println(r2);

//         ListIterator listIterator = list.listIterator();
//         while (listIterator.hasNext()){
//             int i = (int)listIterator.next();
//             System.out.println(i);
//         }
//        System.out.println("-------");
//
//         while(listIterator.hasPrevious()){
//             int j = (int)listIterator.previous();
//             System.out.println(j);
//         }




    }
}

class D implements Comparable {
    int age;

    public D(int age) {
        this.age = age;
    }

    //  20.compareTo(10)
    //  比较的本质是减法
    //     10   20-20=0   10-20= -10
    //  默认排序 是从小到大的
    //     可以推导出  当返回负值时 不需要调换  当返回正值时  需要调换
    //  return 1  调换顺序
    //  return 0  两个对象相等
    //  return -1 不调换
    @Override
    public int compareTo(Object o) {
        D d = (D) o;
        if (this.age > d.age) {
            return -1;
        } else if (this.age < d.age) {
            return 1;
        }
        return 0;
    }

    @Override
    public String toString() {
        return "D{" +
                "age=" + age +
                '}';
    }
}


class A {
    @Override
    public boolean equals(Object obj) {
        return true;
    }
}

class B {
    @Override
    public int hashCode() {
        return 1;
    }
}

class C {
    @Override
    public int hashCode() {
        return 2;
    }

    @Override
    public boolean equals(Object obj) {
        return true;
    }
}